home *** CD-ROM | disk | FTP | other *** search
- /* $Id: COMCamS.h 1.1 1996/07/18 23:54:48 Damien Exp $ */
-
- //
- // COM Example of a Spherical Camera
- //
- // Copyright (C) 1995, Ray Dream, Inc. All rights reserved.
- //
-
- #ifndef __COMCAMS__
- #define __COMCAMS__
-
- #ifndef __I3DEXCAM__
- #include "I3DExCam.h"
- #endif
-
- // SphereCamera GUID :
- DEFINE_GUID(CLSID_SphereCamera, 0x36890000L, 0x6E9C, 0x101C, 0xB8, 0x01, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
-
-
- typedef struct CameraData {
- short fZoomCoef;
- short fAngle;
- } CameraData;
-
-
- // Spherical Camera Object :
- #undef INTERFACE
- #define INTERFACE SphereCamera
- class SphereCamera : public I3DExCamera {
- public :
- SphereCamera();
- ~SphereCamera();
-
- // IUnknown Interface :
- STDMETHODIMP QueryInterface(THIS_ REFIID riid, LPVOID* ppvObj);
- STDMETHODIMP_(ULONG) AddRef(THIS);
- STDMETHODIMP_(ULONG) Release(THIS);
-
- // I3DExtension method :
- STDMETHODIMP_(I3DExtension*) Clone(THIS);
- STDMETHODIMP ShellUtilitiesInit(THIS_ IShUtilities* shellUtilities);
-
- // I3DExDataExchanger methods :
- STDMETHODIMP_(ExtensionDataMap*) GetExtensionDataMap(THIS);
- STDMETHODIMP_(void*) GetExtensionDataBuffer(THIS);
- STDMETHODIMP ExtensionDataChanged(THIS);
- STDMETHODIMP HandleEvent(THIS_ ULONG sourceID);
- STDMETHODIMP_(short) GetResID(THIS);
-
- // I3DExCamera methods
- STDMETHODIMP SetTransform(THIS_ TRANSFORM3D* transform);
- STDMETHODIMP_(BOOLEAN) CreateRay(THIS_ VECTOR2D* screenPosition, VECTOR3D* resultOrigin, VECTOR3D* resultDirection);
- STDMETHODIMP_(BOOLEAN) Project3DTo2D(THIS_ VECTOR3D* position,VECTOR2D* resultScreenPosition, NUM3D* resultDistanceToScreen);
- STDMETHODIMP_(ULONG) GetPrimitiveID(THIS);
- STDMETHODIMP_(ULONG) Clip3D(THIS_ FACET3D* localFacet, VERTEX3D* localVertices,
- FACET3D* cameraFacet, VERTEX3D* cameraVertices,
- NUM3D* clipBox);
- STDMETHODIMP_(BOOLEAN) ClipLine3D(THIS_ VECTOR3D* P1, VECTOR3D* P2);
-
- private :
- TRANSFORM3D fTransform; // Transformation Data (Local to Global and Global to Local)
- ULONG fCRef; // reference Counter
- CameraData fData; // Camera Data Zoom and Angle
- NUM3D Coef; // Preprocessed Coefficient factor
- NUM3D QuickAngle,QuickZoom; // QuickFix values of Zoom and Angle in the Camera Data
- };
-
-
-
- #endif // __COMCAM__
-